package com.yuan.www;

import java.util.Random;
/**
 * 
 * @author zhiqiang
 * 工具类
 */
public class Util {
	/**
	 * 随机生成可重复的n个整数
	 * @param min 可取到的最小值
	 * @param max 可取到的最大值
	 * @param n
	 * @return
	 */
	public static int[] randomCanRe(int min,int max,int n){
		if(max < min || n <= 0){
			return null;
		}
		int[] res = new int[n];
		for (int i = 0; i < res.length; i++) {
			int num = ((int) Math.round((Math.random() * (max - min)))) + min;
			res[i] = num;
		}
		return res;
	}
	
	/**
	 * 随机指定范围内n个不重复的数
	 * @param min 可取到的最小值
	 * @param max 可取到的最大值
	 * @param n
	 * @return
	 */
	public static int[] randomArray(int min, int max, int n) {
		int len = max - min + 1;

		if (max < min || n > len) {
			return null;
		}

		int[] source = new int[len];
		for (int i = min; i < min + len; i++) {
			source[i - min] = i;
		}
		Random rd = new Random();
		int[] result = new int[n];
		int index = 0;
		for (int i = 0; i < result.length; i++) {
			index = Math.abs(rd.nextInt() % len--);
			result[i] = source[index];
			source[index] = source[len];
		}
		return result;
	}
	
	/**
	 * 检测数组q是否在数组Q的前j行中出现
	 * @author zhiqiang
	 * @param Q 要检查的（数组）矩阵
	 * @param q 被检查的数组
	 * @param j 检查到Q的第几行
	 */
	public static boolean is_inQ(int[][] Q,int[] q,int j){
		if(j==0){
			return false;
		}else{
			for(int i = 0 ; i < j ; i++){
				int res = 0;
				for (int w = 0; w < q.length; w++){
					if (Q[i][w]==q[w]){
						res += 1;
					}
				}
				if(res == q.length){//如果全相等返回真
					return true;
				}
			}
		}
		return false;
	}
	public static void main(String[] args) {
		
//		abscon.Resolution.main(args);
	}
}
